Crate version_sync
source ·Expand description
version-sync
provides macros for keeping version numbers in sync
with your crate version.
Library Overview
When making a release of a Rust project, you typically need to adjust some version numbers in your code and documentation. This crate gives you macros that covers some typical cases where version numbers need updating:
-
TOML examples in the
README.md
files that show how to add a dependency on your crate. Seeassert_markdown_deps_updated
. -
A
Changelog.md
file that should at least mention the current version. Seeassert_contains_regex
andassert_contains_substring
. -
A
README.md
file which should only mention the current version. Seeassert_only_contains_regex
. -
The
html_root_url
attribute that tells other crates where to find your documentation. Seeassert_html_root_url_updated
.
Except for assert_contains_substring
, the macros are gated
behind individual features, as detailed below.
A typical configuration will use an integration test to verify
that all version numbers are in sync. Create a
tests/version-numbers.rs
file with:
#[test]
fn test_readme_deps_updated() {
version_sync::assert_markdown_deps_updated!("README.md");
}
#[test]
fn test_readme_mentions_version() {
version_sync::assert_contains_substring!("README.md", "Version {version}");
}
#[test]
fn test_html_root_url() {
version_sync::assert_html_root_url_updated!("src/lib.rs");
}
When you run cargo test
, your version numbers will be
automatically checked.
Cargo Features
In case you only need some of the macros above, you can disable them individually using Cargo features. The features are:
markdown_deps_updated
enablesassert_markdown_deps_updated
.html_root_url_updated
enablesassert_html_root_url_updated
.contains_regex
enablesassert_contains_regex
andassert_only_contains_regex
.
All of these features are enabled by default. If you disable all
of them, you can still use assert_contains_substring
to
quickly check that a given file contains the current crate
version.
Macros
- Assert that versions numbers are up to date via a regex.
- Assert that versions numbers are up to date via substring matching.
- Assert that the
html_root_url
attribute is up to date. - Assert that dependencies on the current package are up to date.
- Assert that all versions numbers are up to date via a regex.
Functions
- Check that
path
contain the regular expression given bytemplate
. - Check that
path
contain the substring given bytemplate
. - Check version numbers in
html_root_url
attributes. - Check dependencies in Markdown code blocks.
- Check that
path
only contains matches to the regular expression given bytemplate
.